﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotasDesktop.Classes;
using System.Data.SqlClient;

namespace GestorDeFlotasDesktop.Facturar
{
    public partial class Facturar : Form
    {
        public Facturar()
        {
            InitializeComponent();
        }



        private void btnFacturar_Click(object sender, EventArgs e)
        {
            SqlDataReader facturasReader;
            SqlInterface.Conectar();
            List<SqlParameter> Parameters = generarListaParametros();

            try
            {
                facturasReader = SqlInterface.ExecuteReader("SQUIRTLE.spCalcularFacturacion",
                    CommandType.StoredProcedure, Parameters);
            } catch(SqlException sqlEx) {
                MessageBox.Show(sqlEx.Message);
                SqlInterface.Desconectar();
                return;
            }
            
            if (facturasReader.HasRows)
            {
                facturasReader.Read();
                decimal importe = facturasReader.GetDecimal(facturasReader.GetOrdinal("FACTURA_IMPORTE"));
                textBox1.Text= "$ " + Convert.ToString(importe);
            }
            else
            {
                MessageBox.Show("No hay viajes en la fecha seleccionada para este cliente.");
                SqlInterface.Desconectar();
                return;
            }
            SqlInterface.Desconectar();

            SqlInterface.Conectar();
            SqlDataReader Viajes = SqlInterface.ExecuteReader("SQUIRTLE.spViajesFacturacion",
                        CommandType.StoredProcedure, Parameters);
            List<Viaje> lista = new List<Viaje>();
            if (Viajes.HasRows)
            {
                while (Viajes.Read())
                {
                    Viaje oViaje = new Viaje();
                    oViaje.dtmFecha = Viajes.GetDateTime(Viajes.GetOrdinal("VIAJE_FECHA"));
                    oViaje.dblValorBandera = Viajes.GetDecimal(Viajes.GetOrdinal("TURNO_VALORBANDERA"));
                    oViaje.dblValorFicha = Viajes.GetDecimal(Viajes.GetOrdinal("TURNO_VALORFICHA"));
                    oViaje.intCantidadFichas = Viajes.GetInt32(Viajes.GetOrdinal("VIAJE_CANTIDADFICHAS"));

                    lista.Add(oViaje);
                }
            }

            dataGridView1.DataSource = lista;
            SqlInterface.Desconectar();
        }

        private List<SqlParameter> generarListaParametros()
        {
            List<SqlParameter> Parameters = new List<SqlParameter>();
            Parameters.Add(new SqlParameter("@inicio", dtpInicio.Value));
            Parameters.Add(new SqlParameter("@fin", dtpFin.Value));
            Parameters.Add(new SqlParameter("@cliente", comboBox1.SelectedValue));

            return Parameters;
        }

        private void Facturar_Load(object sender, EventArgs e)
        {
            SqlInterface.Conectar();
            Clientes oClientes = new Clientes();
            comboBox1.DataSource = oClientes.getClientesHabilitados();
            comboBox1.ValueMember = "intCodigo";
            comboBox1.DisplayMember = "strNombreCompleto";
            SqlInterface.Desconectar();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = null;
            textBox1.Text = "";
        }
    }
}
